package com.aiju.cash.core.api;

import com.aiju.app.callback.HttpCallback;
import com.aiju.common.http.interceptor.HttpFactory;
import com.aiju.widgit.dialog.DialogHelper;

import java.util.HashMap;
import java.util.Map;

import static com.aiju.app.config.ConfigManager.INIT_SERVER_HOST;

/**
 * 作者：流冥 on 2017/7/27 14:10
 * 说明：
 */

public class BankApi extends BaseApi {

    private String uploadImg = INIT_SERVER_HOST + "/merchant/upload"; //图片上传接口
    private String add = INIT_SERVER_HOST + "/merchant/add"; //商户签约银行接口
    private String getMctClass = INIT_SERVER_HOST + "/merchant/getMctClass"; //商户签约银行时，页面中获取商户行业类别接口
    private String getImageInfo = INIT_SERVER_HOST + "/merchant/getImageInfo"; //获取图片信息接口

    private HttpFactory instance;

    public BankApi(DialogHelper dialogHelper) {
        super(dialogHelper);
        instance = HttpFactory.getInstance();
        instance.setDialogHelper(dialogHelper);
    }


    public void setDialogHelper(DialogHelper dialogHelper) {
        instance.setDialogHelper(dialogHelper);
    }


    /**
     * 图片上传接口
     * uploadFile	是	文件流	文件流对象
     * type	是	String	上传文件的字段名称。例如 ，要传 法人身份证正面【私密区】，那么type=bossPositive，如果上传的是法人背面照片那么type=bossBack
     * storeId	是	String	商铺编号
     * token	是	string	令牌
     */
    public void upload(String uploadFile, String type, HttpCallback callback) {
        Map<String, String> map = new HashMap<>();
        map.put("uploadFile", uploadFile);
        map.put("type", type);
        map.put("storeId", mUser.getStoreId());
        map.put("token", mUser.getToken());
        instance.makeProxy().requestPost(uploadImg, map, callback);
    }

    /**
     * 商户签约银行接口
     * id	是	String	主键id
     * parentStoreId	是	String	主店商铺编号（备注：我们自己的商铺编号）
     * storeId	是	String	商铺编号（备注：我们自己的商铺编号）
     * mctNo	是	String	商户编号 （备注：新增后，由平安银行返回，反写数据）
     * traId	是	String	机构商户主键（系统有唯一性校验），建议使用商户表的主键ID，防止重复添加商户 （备注：即本店的storeId）
     * mctName	是	String	商户名称 （备注：需同营业执照名称一致）
     * brandName	是	String	招牌名称
     * cityid	是	String	城市编号
     * address	是	String	详细地址，不含省市区县名称
     * tel	是	String	联系电话
     * openHours	是	String	营业时间，多个以小写逗号分开 (9:00-12:00,13:00-18:00)
     * clsid	是	String	行业分类编号列表（第一个分类编号为主分类，后面的为二级分类）
     * bossName	是	String	法人姓名
     * bossSex	是	String	法人性别（1男，2女）
     * bossIdCountry	是	String	法人证件国别/地区（中国CHN，香港HKG，澳门MAC，台湾CTN）
     * bossIdType	是	String	法人证件类型（1居民身份证,2临时居民身份证,3居民户口簿,4护照,5港澳居民来往内地通行证,6回乡证,7军人证,8武警身份证,9其他法定文件）
     * bossSdate	是	String	法人证件生效时间（yyyy-mm-dd）
     * bossEdate	是	String	法人证件过期时间（yyyy-mm-dd）
     * bossIdNo	是	String	法人证件号码
     * bossTel	是	String	法人电话
     * bossEmail	是	String	法人邮箱
     * bossJob	是	String	法人职业
     * bossAddress	是	String	法人住址
     * bossPositive	是	String	法人身份证正面【私密区】（系统返回的图片路径）
     * bossBack	是	String	法人身份证背面【私密区】（系统返回的图片路径
     * blType	是	String	营业执照类型（1三证合一，2非三证合一）
     * blSdate	是	String	营业执照生效时间（yyyy-mm-dd）
     * blEdate	是	String	营业执照过期时间（yyyy-mm-dd）
     * blNo	是	String	营业执照编号（系统有唯一性校验）
     * blPic	是	String	营业执照图片【私密区】（系统返回的图片路径）
     * bankName	是	String	开户行名称
     * accountName	是	String	银行户名
     * accountNo	是	String	银行账号
     * accountType	是	String	结算账户类型（2对私，1对公
     * bankNo	是	String	清算联行号，开户行行号
     * accountBoss	是	String	结算账户人身份（1法人，2法人亲属），结算帐户为对私时必填
     * accountIdType	是	String	法人亲属证件类型（1居民身份证,2临时居民身份证,3居民户口簿,4护照,5港澳居民来往内地通行证,6回乡证,7军人证,8武警身份证,9其他法定文件）结算账户人身份为法人亲属时必填
     * accountIdNo	是	String	法人亲属证件号码
     * admName	是	String	客户经理姓名，必须为系统后台的管理员真实姓名
     * lng	是	String	经度
     * lat	是	String	纬度
     * pic1	是	String	整体门面（含招牌）图片【公共区】
     * pic2	是	String	收银台图片【公共区】
     * pic3	是	String	店内环境图片【公共区】
     */
    public void add(String id, String parentStoreId, String storeId, String mctNo, String traId, String mctName,
                    String brandName, String cityid, String address, String tel, String openHours, String clsid,
                    String bossName, String bossSex, String bossIdCountry, String bossIdType, String bossSdate, String bossEdate,
                    String bossIdNo, String bossTel, String bossEmail, String bossJob, String bossAddress, String bossPositive,
                    String bossBack, String blType, String blSdate, String blEdate, String blNo, String blPic,
                    String bankName, String accountName, String accountNo, String accountType, String bankNo, String accountBoss,
                    String accountIdType, String accountIdNo, String admName, String lng, String lat, String pic1,
                    String pic2, String pic3,
                    HttpCallback callback) {
        Map<String, String> map = new HashMap<>();
        map.put("id", id);
        map.put("parentStoreId", parentStoreId);
        map.put("storeId", storeId);
        map.put("mctNo", mctNo);
        map.put("traId", traId);
        map.put("mctName", mctName);
        map.put("brandName", brandName);
        map.put("cityid", cityid);
        map.put("address", address);
        map.put("tel", tel);
        map.put("openHours", openHours);
        map.put("clsid", clsid);
        map.put("bossName", bossName);
        map.put("bossSex", bossSex);
        map.put("bossIdCountry", bossIdCountry);
        map.put("bossIdType", bossIdType);
        map.put("bossSdate", bossSdate);
        map.put("bossEdate", bossEdate);
        map.put("bossIdNo", bossIdNo);
        map.put("bossTel", bossTel);
        map.put("bossEmail", bossEmail);
        map.put("bossJob", bossJob);
        map.put("bossAddress", bossAddress);
        map.put("bossPositive", bossPositive);
        map.put("bossBack", bossBack);
        map.put("blType", blType);
        map.put("blSdate", blSdate);
        map.put("blEdate", blEdate);
        map.put("blNo", blNo);
        map.put("blPic", blPic);
        map.put("bankName", bankName);
        map.put("accountName", accountName);
        map.put("accountNo", accountNo);
        map.put("accountType", accountType);
        map.put("bankNo", bankNo);
        map.put("accountBoss", accountBoss);
        map.put("accountIdType", accountIdType);
        map.put("accountIdNo", accountIdNo);
        map.put("admName", admName);
        map.put("lng", lng);
        map.put("lat", lat);
        map.put("pic1", pic1);
        map.put("pic2", pic2);
        map.put("pic3", pic3);
        instance.makeProxy().requestPost(uploadImg, map, callback);
    }

    /**
     * 商户签约银行时，页面中获取商户行业类别接口
     */
    public void getMctClass(HttpCallback callback) {
        Map<String, String> map = new HashMap<>();
        map.put("token", mUser.getToken());
        instance.makeProxy().requestPost(uploadImg, map, callback);
    }

    /**
     * 获取图片信息接口
     * filePath	是	string	上传后接口返回的字符串
     * token	是	string	令牌
     */
    public void getImageInfo(String uploadFile, String type, HttpCallback callback) {
        Map<String, String> map = new HashMap<>();
        map.put("uploadFile", uploadFile);
        map.put("type", type);
        map.put("storeId", mUser.getStoreId());
        map.put("token", mUser.getToken());
        instance.makeProxy().requestPost(uploadImg, map, callback);
    }
}
